home *** CD-ROM | disk | FTP | other *** search
- $INCLUDE "REGNAMES.INC"
- DIM names$(1500)
- DIM length&(1500)
- mem$=STRING$(16384,CHR$(0))
- mem.seg=STRSEG(mem$)
- mem.ofs=STRPTR(mem$)
- COLOR 14
-
- IF CheckVector(&H49)=0 THEN
- SOUND 2000,2
- PRINT "FEHLER: ATUtilities File Transfer ist nicht installiert!"
- GOTO ende
- END IF
- GOSUB CmdAuswertung
-
- REG %AX,(&H6*256)
- CALL INTERRUPT &H49
- segment=REG(%ES)
- offset=REG(%DI)
-
- DEF SEG = segment
- a$=a$+CHR$(0)
- FOR i=1 TO LEN(a$)
- POKE offset+i-1,ASC(MID$(a$,i,1))
- NEXT
-
- REG %AX,(12*256)
- CALL INTERRUPT &H49
- IF REG(%BX)=10000 THEN
- fl=REG(%CX)
- REG %BX,fl
- REG %AX,(14*256)
- CALL INTERRUPT &H49
- i=0 : ok=0 : xdir$=""
- WHILE ok=0
- x$=CHR$(PEEK(offset+i))
- IF x$<>CHR$(0) THEN xdir$=xdir$+x$ ELSE ok=1
- i=i+1
- WEND
- IF RIGHT$(xdir$,1)<>":" THEN xdir$=xdir$+"/"
- COLOR 11
- PRINT "Verzeichnis: ";
- PRINT xdir$
- PRINT ""
- REG %BX,fl
- REG %AX,(13*256)
- CALL INTERRUPT &H49
- ELSE
- SOUND 2000,2
- PRINT "Verzeichnis ";a$;"ist nicht vorhanden/Zugriff verweigert."
- GOTO ende
- END IF
-
- FOR i=1 TO LEN(a$)
- POKE offset+i-1,ASC(MID$(a$,i,1))
- NEXT
-
- REG %AX,(11*256)
- CALL INTERRUPT &H49
- IF REG(%BX)=10000 THEN
- DEF SEG = segment
- anz=REG(%CX)
- COLOR 14
- count=0
- ofs=offset+44
- FOR i=1 TO anz
- typ=PEEK(ofs+36)
- IF typ<>1 THEN
- names$(count)=""
- FOR j=0 TO 29
- names$(count)=names$(count)+CHR$(PEEK(ofs+j))
- NEXT
- length&(count)=PEEKL(ofs+30)
- count=count+1
- END IF
- ofs=ofs+44
- NEXT
- IF count>0 THEN
- FOR i=0 TO count-1
- n$=names$(i)
- l&=length&(i)
- COLOR 14
- PRINT n$;
- LOCATE ,40
- COLOR 11
- PRINT "0 %";
-
- xn$=xdir$+n$+CHR$(0)
- DEF SEG = segment
- FOR j=0 TO LEN(xn$)-1
- POKE offset+j,ASC(MID$(xn$,j+1,1))
- NEXT
- REG %AX,0
- REG %BX,1
- CALL INTERRUPT &H49
- IF REG(%BX)=10000 THEN
- fh=REG(%CX)
-
- REG %DS,STRSEG(n$)
- REG %DX,STRPTR(n$)
- REG %AX,&H3C*256
- REG %CX,0
- CALL INTERRUPT &H21
- IF (REG(%FLAGS) MOD 2)=0 THEN
- pc=REG(%AX)
- t&=0 : fehler=0
- WHILE t&<l& AND fehler=0
- REG %AX,2*256
- REG %BX,fh
- REG %CX,16384
- CALL INTERRUPT &H49
- bytes=REG(%BX)
- t&=t&+bytes
- IF bytes=0 AND t&<l& THEN
- fehler=1
- LOCATE ,40
- PRINT "Fehler beim Lesen!"
- ELSE
- REG %AX,5*256
- REG %BX,mem.seg
- REG %DX,mem.ofs
- REG %CX,bytes
- CALL INTERRUPT &H49
- REG %AX,&H40*256
- REG %BX,pc
- REG %CX,bytes
- REG %DS,mem.seg
- REG %DX,mem.ofs
- CALL INTERRUPT &H21
- IF (REG(%FLAGS) MOD 2)=1 THEN
- fehler=1
- LOCATE ,40
- PRINT "Fehler beim Schreiben, Fehler";REG(%AX);"."
- ELSE
- p&=(100*t&)/l&
- LOCATE ,39
- PRINT p&;"%";
- END IF
- END IF
- WEND
-
- REG %AX,&H3E*256
- REG %BX,pc
- CALL INTERRUPT &H21
- ELSE
- LOCATE ,40
- PRINT "Kann Datei nicht erstellen, Fehler";REG(%AX);"."
- END IF
-
- REG %AX,1*256
- REG %BX,fh
- CALL INTERRUPT &H49
- ELSE
- LOCATE ,40
- PRINT "Kann Datei nicht ffnen!"
- END IF
- PRINT ""
- IF INKEY$=CHR$(27) THEN i=count
- NEXT
- ELSE
- SOUND 2000,2
- PRINT "Das Verzeichnis enthlt keine Dateien."
- END IF
- ELSE
- SOUND 2000,2
- PRINT "Zugriff auf Amiga-Verzeichnis ";a$;"verweigert."
- END IF
-
- ende:
- COLOR 7
- END
-
- CmdAuswertung:
- cmd$=COMMAND$
- a$=cmd$
- IF a$="/?" OR a$="?" THEN
- GOTO argf
- END IF
- IF a$="" THEN a$=STRING$(20,CHR$(0))
- RETURN
-
- argf:
- SOUND 2000,2
- PRINT "CDLoad - Version 1.0 Copyright (C) 1994 by Thomas Dreibholz"
- PRINT ""
- PRINT "CDLoad kopiere alle Dateien aus dem angegebenen Amiga-Verzeichnis"
- PRINT "in das aktuelle PC-Verzeichnis."
- PRINT ""
- PRINT "Aufruf: CDLoad {Amiga-Verzeichnis | ? | /?}"
- PRINT ""
- GOTO ende
-
-
- FUNCTION CheckVector(num) STATIC
- REG %AX,(&H35*256)+num
- CALL INTERRUPT &H21
- segm=REG(%ES)
- offs=REG(%BX)
- DEF SEG = segm
- IF (segm=0) OR (PEEK(offs)=207) THEN
- CheckVector=0
- ELSE
- CheckVector=1
- END IF
- END FUNCTION
-
- FUNCTION Format$(num,c$) STATIC
- n$=STR$(num)
- n$=MID$(n$,2,LEN(n$)-1)
- IF LEN(n$)=1 THEN n$=c$+n$
- Format$=n$
- END FUNCTION